require('./src/models/sync') // 同步数据库模型
const path = require('path')
const express = require('express')
const cors = require('cors') // 解决跨域问题,需要安装cors包
// 导入路由模块
const captchaRouter = require('./src/routes/captcha')
const userRouter = require('./src/routes/user')
const adminRouter = require('./src/routes/admin')
// 导入cookie-session中间件
const cookieSession = require('cookie-session')

const app = express()

// 解决跨域问题
app.use(
  cors({
    origin: 'http://localhost:5173',
    credentials: true,
  })
)

// 处理静态资源的中间件
app.use(express.static(path.resolve(__dirname, 'public')))

// 这个中间件用来解析请求体中的json数据
app.use(express.json())
// 这个中间件用来解析请求体中的模拟表单数据
app.use(express.urlencoded({ extended: true }))

// 设置session中间件
app.use(
  cookieSession({
    name: 'session',
    keys: ['secret'],
    maxAge: 24 * 60 * 60 * 1000, // 24小时有效期
  })
)
// 挂载路由
app.use('/api/captcha', captchaRouter) // 验证码路由
app.use('/api/user', userRouter) //登录注册路由
// token验证中间件
app.use(require('./src/middleware/tokenVerification')) //放在登录路由之后,其余需要验证token的路由之前
app.use('/api/condition', require('./src/routes/condition')) //路况信息路由
app.use('/api/announcement', require('./src/routes/announcement')) //公告路由
app.use('/api/admin', require('./src/middleware/isAdmin'), adminRouter) //管理员路由,验证管理员权限才能访问

// 错误处理中间件
app.use(require('./src/middleware/errorHandler'))

const port = 3001
app.listen(port, () => {
  console.log(`Server running on port ${port}`)
})
